<?php

/**
 * Действие по умолчанию модуля статических страниц.
 *
 */
class Static_Action_Default extends Kernel_Action_Abstract {

    /**
     * URL страницы, содержимое которой нужно отобразить.
     *
     * @var string
     */
    public $url;

    /**
     * Путь к файлу шаблона.
     *
     * @var string
     */
    protected $_template = '_contents.tpl';

    /**
     * Реализация обработки пользовательского запроса.
     *
     */
    protected function _process() {

        if (!is_array($row = $this->_getContents())) {
            $this->_abort('Static page not found');
        }

        list($title, $contents, $template, $frame) = array_values($row);

        $response = Application::getResponse()->
            setTitle($title)->assign('contents', $contents);

        if (strlen($template) > 0) {
            $response->setTemplate($template);
        }

        if (strlen($frame) > 0) {
            $response->setFrameTemplate($frame);
        }
    }

    /**
     * Возвращает содержимое текущей страницы.
     *
     * @return  array
     */
    private function _getContents() {
        $query = 'SELECT
                         `c`.`title`,
                         `c`.`contents`,
                         `s`.`template`,
                         `s`.`frame`
                    FROM
                         `static` `s`
              INNER JOIN
                         `system_contents` `c`
                      ON
                         `c`.`id` = `s`.`contents_id`
                   WHERE
                         `s`.`url` = "' . database::escape($this->url) . '"';
        return database::fetchRow($query);
    }
}
